package com.cloud.demo.controller;

import com.cloud.demo.service.TestService;
import jakarta.annotation.Resource;
import org.springframework.context.annotation.Bean;
import org.springframework.web.bind.annotation.RestController;


/**
 * Author:  xuanning
 * Date:    2022/5/27 9:55
 */
@RestController
public class TestController {

    /**
     * Resource和Autowired区别？
     * 1.@Resource是JDK自带的，@Autowired是spring框架提供的
     * 2.@Resource默认按照名称去装配,@Autowired默认按照类型去装配
     * 3.存在多个实例的时候,@Resource需要通过name属性指定bean,@Autowired需要和@Qualifier一起使用
     */
    @Resource(name="testServiceImpl")
//    @Autowired
//    @Qualifier("testServiceImpl")
    private TestService testService;


    /**
     * Bean注解面试题
     * 1.将返回值注入到容器里，默认的bean名称是方法名(可以通过name指定名称)，返回值是实例
     * 2.多个@Bean方法名相同，只会注入一个实例，注入第一个实例，后面的不会继续放到容器里
     *
     * bean的默认名称问题
     * 1.默认为首字母小写,例如 TestServiceImpl==>testServiceImpl
     * 2.当首字母多个大写的时候，默认为类名。例如TESTServiceImpl==>TESTServiceImpl
     */
    @Bean(name = "hello")
    public String hello2(){
        return "hello2";
    }

    @Bean(name = "hello")
    public String hello(){
        return "hello";
    }


}
